本文介绍Java压缩/解压.zip、.tar.gz、.tar.bz2的方式。
- 对于zip文件:使用
java.util.zip.ZipEntry
和java.util.zip.ZipFile
,通过设置Charset
为StandardCharsets.UTF_8
支持中文。 - 对于.tar.gz、tgz文件:可以看做先用tar打包,再使用gz进行压缩。使用
commons-compress
包的TarArchiveInputStream
和GzipCompressorInputStream
。 - 对于.tar.bz2文件:可以看做先用tar打包,再使用bz2进行压缩。使用
commons-compress
包的TarArchiveInputStream
和BZip2CompressorInputStream
。
在这里有个问题如果使用TarInputStream
搭配jdk的 GZIPInputStream
会产生乱码。而使用commons-compress
包的TarArchiveInputStream
和GzipCompressorInputStream
则可解决乱码问题。
代码如下:
public class ZipUtil { |
参考文档: